/*
 * @Author: your name
 * @Date: 2021-07-07 15:01:29
 * @LastEditTime: 2022-04-01 15:55:02
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \exc-tl1-2\SRC\user_src\at_cmd_rx.h
 */
/**
	*文件名称：
	*
	*文件日期：
	*
	*文件描述：
	*
	*文件版本：V1.0
	*
	*/

#ifndef AT_CMD_RX_H
#define AT_CMD_RX_H

/* 头文件包含区	*/
#include "string.h"
#include "stdint.h"
#include "uart.h"
#include "device_time.h"

/*对接接口定义*/
#define UART_RECV_BYTE huart2.Instance->RDR							  //串口接收一字节
#define UART_GET_RN_FLAG __HAL_UART_GET_FLAG(&huart2, UART_FLAG_RXNE) //串口获取接受状态标志位

typedef enum
{
	MY_RESET = 0,
	MY_SET = !MY_RESET
} My_FlagStatus;
typedef enum
{
	WireLess_Uart = 0,
	PC_Uart = !MY_RESET
} Uart_Com;

/* 类型声明区 */
#define BUF_SIZE 520
#if (BUF_SIZE != 520)
#error "因app区中断使用的是boot区的终端服务函数，所以BUF_SIZE大小必须为720和出厂时boot区变量地址一致，否则会造成地址偏移导致boot区中断服务函数找不到这个变量"
#endif
/* 宏定义区 */
/*这段内存空间一定不能变*/
#pragma pack(1)
typedef struct
{
	uint8_t my_at_readbuf[BUF_SIZE];
	uint16_t my_at_readLen;
	uint8_t my_at_cnt;
	uint8_t my_data_buf[BUF_SIZE / 2];
} mainUartStryct;
extern mainUartStryct mainUart;
#pragma pack()

/* 函数声明区 */

void set_rtc_time(uint8_t y, uint8_t mon, uint8_t d, uint8_t h, uint8_t min, uint8_t s);
void AT_RxCallback(void);
void AT_RX_Restart(void);
void AT_RX_Universal(void);
void AT_RX_QCCID(void);
void AT_RX_IMEI(void);
void AT_RX_CREG(void);
void AT_RX_CGATT(void);
void AT_RX_CCLK(void);
void AT_RX_CSQ(void);
void AT_RX_QMTOPEN(void);
void AT_RX_QMTCONN(void);
void AT_RX_QMTSUB(void);
void str_to_hex(char *str, uint16_t strLen, uint8_t *outBuf);
void waiting_to_receive(void);
void data_deal(uint8_t *deal_buf, uint16_t deal_data_len, Uart_Com uart_tx);
void ota_before_ready(void);
void AT_RX_UPLINK(void);
#if (PROJECT_TYPEDEF == NB)

void ota_Timeout_handle(void);
#endif
#if (PROJECT_TYPEDEF == NB || PROJECT_TYPEDEF == NB_ONENET)
void AT_RX_SWITCH_BAUD(void);
void AT_RX_CEDRXS(void);
void delay_MIPLDISCOVER(void);
void AT_RX_NMSTATUS(void);
#endif
#endif
